package com.cosc.apgs.param.config;

import com.cosc.apgs.param.interceptor.TokenInterceptor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

/**
 * @author Howl-Xu
 * @version 1.0.0
 * @Description: WebConfig
 * @createTime 2020年11月09日 12:55:00
 */
@Configuration
public class WebConfig implements WebMvcConfigurer {
    /**
     * 添加拦截器，拦截所有请求
     *
     * @param registry
     */
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(createTokenInterceptor())
                .addPathPatterns("/**");
    }

    //添加跨域操作，解决CORS同源问题
    @Override
    public void addCorsMappings(CorsRegistry registry)
    {
        // 设置允许跨域的路径
        registry.addMapping("/**")
                // 设置允许跨域请求的域名
                .allowedOrigins("*")
                // 是否允许证书
                .allowCredentials(true)
                // 设置允许的方法
                .allowedMethods("GET", "POST", "DELETE", "PUT")
                // 设置允许的header属性
                .allowedHeaders("*")
                // 跨域允许时间
                .maxAge(3600);
    }

    /**
     * 创建token拦截器
     *
     * @return
     */
    @Bean
    public TokenInterceptor createTokenInterceptor() {
        return new TokenInterceptor();
    }
}
